﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PicStore.Model;

namespace PicStore.BLL.Interface
{
    public interface IPictureService
    {
        List<PictureInfo> GetPictureList(int userId, DateTime fromDate, DateTime toDate, string orderby, out int count, out int totalPages,
            int pageSize, int pageIndex = 1, bool isAsc = true);

        List<PictureInfo> GetPictureList(int userId, DateTime fromDate, DateTime toDate, List<string> places, List<string> sexs,
                                         List<string> items, List<string> colors, List<string> styles, List<string> lengths, List<string> collars,
                                         List<string> fronts, List<string> sleeves, List<string> sweaterTextures, List<string> types,
                                         string orderby, out int count, out int totalPages, int pageSize,
                                         int pageIndex = 1, bool isAsc = true);

        PictureInfo GetPictureById(int pictureId);
        void DeletePictureById(int pictureId);
        void CreatePicture(int userId, string pictureFullName, string pictureOnlyFileName, string relativeFileName, DateTime takePhotoDate, string place, string sex, string item, string color, string style, string length,
                           string collar, string front, string sleeve, string sweaterTexture, string type);
        void UpdatePicture(int userId, int pictureId, string place, string sex, string item, string color, string style, string length,
                           string collar, string front, string sleeve, string sweaterTexture, string type);

        List<PictureInfoForExcel> GetPictureListForExcel(int userId, DateTime fromDate, DateTime toDate);

        List<PictureInfoForExcel> GetPictureListForExcelWithFilters(int userId, DateTime fromDate, DateTime toDate, List<string> places, List<string> sexs,
                                                                    List<string> items, List<string> colors, List<string> styles, List<string> lengths, List<string> collars,
                                                                    List<string> fronts, List<string> sleeves, List<string> sweaterTextures, List<string> types);

        bool IsPictureUploaded(string pictureOnlyFileName, out string finalServerFileName, out string relativePathName);
    }
}
